home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / pvap322a / pvapmain.plt < prev    next >
Text File  |  1993-11-30  |  13KB  |  479 lines

  1. /*        MOPTERM用 Pc-Van Auto-Pilot  PVAPver3.22a        */
  2. /*                                    */
  3. /*    All Right Reserved, Copyright(c) モップ        1991-1993    */
  4. /*                    (NIFTY  PFF00570)        */
  5. /*    All Right Reserved, Copyright(c) フェイス    1991-1993    */
  6. /*                    (NIFTY  VFA03257)        */
  7. /*                    (PC-VAN DSA60894)        */
  8. /*    All Right Reserved, Copyright(c) Yama-chan    1991-1993    */
  9. /*                    (NIFTY  PEE01244)        */
  10. /*    All Right Reserved, Copyright(c) すけるとん☆    1991-1992    */
  11. /*                    (NIFTY  NBE00503)        */
  12. /*    All Right Reserved, Copyright(c) 氷面鏡        1992        */
  13. /*                    (NIFTY    GEG01261)        */
  14. /*    All Right Reserved, Copyright(c) おくと★    1993        */
  15. /*                    (NIFTY PEE01566)        */
  16.  
  17. /*    変数領域等の設定    */
  18. var ID        [8];    /* ID                        */
  19. var PASS    [8];    /* パスワード                    */
  20. var AP        [20];    /* 2400bpsのAPの電話番号        */
  21. var AP2        [20];    /* 1200bpsのAPの電話番号        */
  22. var AP3        [20];    /* PC-VAN+専用APの電話番号        */
  23. var BPS        [4];    /* アクセスするAPのスピード            */
  24. var TEL        [1];    /* 回線の種類(ダイアルかプッシュホンか)    */
  25. var MODEM    [40];    /* モデムコマンド                */
  26. var SAVE    [8];    /* ログ保存モード                */
  27. var SAVE2    [5];    /* ログ保存モード                */
  28. var LIST    [2];    /* 各種リスト取得時の画面数            */
  29. var CALAMI    [4];    /* 通信終了時の処理                */
  30. var UPDOWN    [3];    /* 通信メニュー初期値(アップ・ダウンロードするかどうか)*/
  31. var BILLCHK    [3];    /* 通信メニュー初期値(課金情報確認するかどうか)    */
  32. var PRESER    [3];    /* 通信メニュー初期値(ログを保存するかどうか)    */
  33. var ACCEAP    [7];    /* 通信メニュー初期値(アクセスするAP)        */
  34. var REDIAL    [4];    /* 通信メニュー初期値(リダイアル回数)        */
  35. var LOGPATH    [64];    /* ログ保存ディレクトリ                */
  36. var TEMPPATH    [64];    /* テンポラリファイルを置くディレクトリ     */
  37. var TITLEPATH    [64];    /* 未読タイトルのログを置くデイレクトリ        */
  38. var DIR2    [64];    /* TXF他を置くディレクトリ            */
  39. var DIR1    [64];    /* PVAPを起動したディレクトリ        */
  40. var SOUND    [64];    /* 音声メッセージファイルを置くディレクトリ    */
  41. var BELFIL    [64];    /* ベル音の変わりに鳴らすSNDファイル        */
  42. var VBELL    [3];    /* 画面フラッシュするかどうか            */
  43. var FMGR    [64];    /* ファイルマネージャファイル名            */
  44. var r        [3];    /* 背景色(赤)                    */
  45. var g        [3];    /* 背景色(緑)                    */
  46. var b        [3];    /* 背景色(青)                    */
  47. var PCVAN    [1536];    /* PC-VANでの処理                */
  48. var REC        [3];    /* スイッチ(ログをセーブ中かどうか)        */
  49. var TIMER    [3];    /* スイッチ(指定時刻に通信かどうか)        */
  50. var WHERE    [8];    /* 場所の種類(ログをボード別に保存用)        */
  51. var WHERE2    [8];    /* 現在位置                    */
  52. var DOVAN    [5];    /* 巡回モード                    */
  53. var TITCHECK    [3];    /* 未読タイトルを取得したかどうか        */
  54. var SETFILE    [64];    /* 設定ファイル用                */
  55. var VANFILE    [64];    /* 設定ファイル用                */
  56. var SETFILE1    [64];    /* 設定ファイル用                */
  57. var SETFILE2    [64];    /* 設定ファイル用                */
  58. var LOGFILE    [12];    /* ログファイル名(yymmddnn.*)            */
  59. var A        [10];    /* 雑用1                    */
  60. var B        [10];    /* 雑用2                    */
  61. var C        [10];    /* 雑用3                    */
  62. var D        [10];    /* 雑用4                    */
  63. var t        [1];    /* 前バージョンとの互換用            */
  64. var HANDLE    [12];    /* 前バージョンとの互換用            */
  65. %ver    {ver3.22a};    /* PVAPのバージョン                */
  66. %VL    {322a};        /* ドキュメント・バージョンアップ概要表示用    */
  67. %BELL    @xc({07});    /* ベル設定                    */
  68.  
  69. /*    音声メッセージ出力処理    */
  70. %SNDMSG{        /*    SNDファイルが無い場合はベルを鳴らす    */
  71.     [file]
  72.     case    (SOUND={},
  73.         {No},{case    (@filechk(SOUND|{\}|file),
  74.                 {Yes},    {snd(SOUND|{\}|file)},
  75.                 {No},    {display(BELL)})},
  76.         {Yes},{display(BELL)});
  77. };
  78. %SNDMSG2{        /*    SNDファイルが無い場合は何も鳴らさない*/
  79.     [file]
  80.     case    (SOUND={},
  81.         {No},{case    (@filechk(SOUND|{\}|file),
  82.                 {Yes},{snd(SOUND|{\}|file)})},
  83.         {Yes},);
  84. };
  85.  
  86. /*    n番目の部分文字列をとりだす関数    */
  87. %nth{
  88.     [str,n,sep]    /*    元の文字列,順番,区切り文字列    */
  89.     var a[256];
  90.     var m[3];
  91.     a:=str;
  92.     m:=0;
  93.     case    (n<1,
  94.         {Yes},    {im({})},
  95.         {No},    {loop({
  96.             m:=m+1;
  97.             case    (m==n||a={},
  98.                 {Yes},{im({No})},
  99.                 {No},{a:=@body(a,sep);im({Yes})});
  100.             });
  101.             im(@head(a,sep));});
  102. };
  103.  
  104. /*    パラメタで指定されたディレクトリへ移動する
  105.     (「A:\」と「A:」の両方が可能)    */
  106. %setcdir2{
  107.     [dir]
  108.     %dir2 @case(@nochar(dir),2,{im(dir|{\})},,{im(dir)});
  109.     setcdir(dir2)
  110. };
  111.  
  112. /*    指定されたディレクトリ配下に第2パラメタで指定されたディレクトリを
  113.     (もし無ければ)作成する    */
  114. %mkdir{
  115.     [dir,name]
  116.     dispoff({Yes});
  117.     case    (@setcdir2(dir),
  118.         {Yes},    {command({mkdir }|name)},
  119.         {No},    {footnote({装置(}|dir|{)が使えませんが?});
  120.             select({装置(}|dir|{)が使えませんが?},99999,{},
  121.             {   もう一回やってみる   },{mkdir(dir,name)},
  122.             {    自動処理をやめる    },{stop},
  123.             { 無視して先の処理をやる },{});});
  124.     dispoff({No})
  125. };
  126.  
  127. /*    指定されたディレクトリを(もし無ければ)作成する    */
  128. %mkdir2{
  129.     [dir]
  130.     case    (@setcdir2(dir),
  131.         {Yes},,
  132.         {No},    {mkdir2(@body(dir,,{\}));
  133.             mkdir(@body(dir,,{\}),@tail(dir,{\}));});
  134. };
  135.  
  136. /*    指定されたディレクトリに 「yymmddnn.*」 というファイルを作成する    */
  137. %crefile{
  138.     [path,sfx]
  139.     var n[2];
  140.     var file1[12];
  141.     %d    @getdt;
  142.     %date    @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  143.     n:=-1;
  144.     mkdir2(path);
  145.     setcdir2(path);
  146.     case    (SAVE2,
  147.         {EVERY},{loop({
  148.             n:=n+1;
  149.             case(@nochar(n)=1,{Yes},{n:={0}|n});
  150.             case    (sfx={},
  151.                 {Yes},    {file1:=date|n},
  152.                         {No},    {file1:=date|n|{.}|sfx});
  153.             case    (@filechk(file1)={No}||n==99,
  154.                 {Yes},{im({No})},
  155.                 {No}, {im({Yes})});
  156.             })},
  157.             /* ここからした 930328 おくと★ */
  158.         {MONTH},{case    (sfx={},
  159.                 {Yes},    {file1:=@getchar(d,3,2)|
  160.                     @getchar(d,6,2)},
  161.                         {No},    {file1:=@getchar(d,3,2)|
  162.                     @getchar(d,6,2)|{.}|sfx})},
  163.             /* ファイル名を YYMM.* とする   */
  164.             /* ここまで     930328 おくと★ */
  165.         {DAY},    {case    (sfx={},
  166.                 {Yes},    {file1:=date},
  167.                 {No},    {file1:=date|{.}|sfx})});
  168.     setcdir2(DIR1);
  169.     im(file1);
  170. };
  171.  
  172. /*    指定されたディレクトリに 「yymmddnn.*」 というファイルを作成する    */
  173. %crefile2{
  174.     [path,sfx]
  175.     var n[2];
  176.     var file1[12];
  177.     %d    @getdt;
  178.     %date    @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  179.     n:=-1;
  180.     mkdir2(path);
  181.     setcdir2(path);
  182.     loop({
  183.     n:=n+1;
  184.     case(@nochar(n)=1,{Yes},{n:={0}|n});
  185.     case    (sfx={},
  186.         {Yes},    {file1:=date|n},
  187.         {No},    {file1:=date|n|{.}|sfx});
  188.     case    (@filechk(file1)={No}||n==99,
  189.         {Yes},{im({No})},
  190.         {No}, {im({Yes})});
  191.     });
  192.     setcdir2(DIR1);
  193.     im(file1);
  194. };
  195.  
  196. /*    現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」    */
  197. %getdt{
  198.     %dt    @daylong;
  199.     %week    @case    (@getchar(dt,12,3),
  200.             {Sun},{im({日})},{Mon},{im({月})},
  201.             {Tue},{im({火})},{Wed},{im({水})},
  202.             {Thu},{im({木})},{Fri},{im({金})},
  203.             {Sat},{im({土})},,{im({  })});
  204.     im(@getchar(dt,1,4)|{-}|@getchar(dt,6,2)|{-}|@getchar(dt,9,2)|
  205.     { (}|week|{) }|@getchar(dt,16,8));
  206. };
  207.  
  208. /*    全てのメモをクローズする    */
  209. %CloseAllMemo{
  210.     case(@mlast!=0 && @mcheck==0,{Yes},{mopen(@mlast)});
  211.     case(@mcheck!=0,{Yes},{loop({mclose(2);im(@mcheck!=0)})});
  212. };
  213.  
  214. /*    メモを削除する    */
  215. %CloseMEMO{
  216.     [memono]
  217.     case    (@mcheck!=memono,
  218.         {Yes},{CloseAllMemo;mopen(memono);mclose(3)},
  219.         {No},{mclose(3)});
  220. };
  221.  
  222. /*    全てのメモを非編集状態にする    */
  223. %InactMemo{
  224.     case(@mcheck!=0,{Yes},{mclose(1)});
  225. };
  226.  
  227. /*    全てのメモを削除する    */
  228. %AllDelMEMO{
  229.     loop({
  230.     case(@mcheck>=memono,{Yes},{mclose(3)});
  231.     im(@mcheck>=memono);
  232.     });
  233.     CloseAllMemo;
  234.     loop({
  235.     case    (@mlast>=memono,
  236.         {Yes},    {case(@mcheck!=@mlast,{Yes},{mopen(@mlast)});
  237.             mclose(3);
  238.             im({Yes})},
  239.         {No},    {im({No})});
  240.     });
  241. };
  242.  
  243. /*    一時的に終了    */
  244. %Pause{
  245.     chat({Yes});
  246.     loop({
  247.     footnote({再開新メモ},{b});
  248.     waitx({});
  249.     case    (@xtype,
  250.         101,    {im({No})},
  251.         201,    {im({No})},
  252.         102,    {case    (@mlast<9,
  253.                 {Yes},    {%new @mlast+1;
  254.                     CloseAllMemo;
  255.                     madd(new,{});
  256.                     mopen(new,0,21,639,459);});
  257.                     im({Yes})},
  258.         202,    {case    (@mlast<9,
  259.                 {Yes},    {%new @mlast+1;
  260.                     CloseAllMemo;
  261.                     madd(new,{});
  262.                     mopen(new,0,21,639,459);});
  263.                     im({Yes})},,
  264.             {im({Yes})});
  265.     });
  266.     CloseAllMemo;
  267.     footnote({});
  268.     chat({No});
  269. };
  270.  
  271. /*    PVAPの説明    */
  272. %NOTEsel{
  273.     loop({
  274.     SNDMSG({erande_f.snd});
  275.     footnote({表示する物を選択して下さい});
  276.     select    ({表示する物を選択して下さい},
  277.         99999,{im({No})},
  278.         { バージョンアップ概要 },
  279.             {NOTE({VUP});im({Yes})},
  280.         { ドキュメントファイル },
  281.             {NOTE({DOC});im({Yes})},
  282.         {        終  了        },
  283.             {im({No})});
  284.     });
  285. };
  286. %NOTE{
  287.     [file];
  288.     case    (@mlast==9,
  289.         {Yes},
  290.         {SNDMSG({kaknin_f.snd});
  291.         footnote({メモ9を削除してもよろしいですか?});
  292.         select    ({メモ9を削除してもよろしいですか?},
  293.             99999,,
  294.             { は  い },{NOTE1(file)},
  295.             { いいえ },)},
  296.         {No},
  297.         {NOTE1(file)});
  298. };
  299. %NOTE1{
  300.     [file];
  301.     var MEMO[1];
  302.     case    (@mlast==9,
  303.         {Yes},    {CloseAllMemo;
  304.             mclear(MEMO)},
  305.         {No},    {MEMO:=@mlast+1;
  306.             CloseAllMemo;
  307.             madd(MEMO,{\n});
  308.             mclear(MEMO)});
  309.     case    (@filechk(DIR1|{\PVAP}|VL|{.}|file),
  310.         {Yes},    {mread(DIR1|{\PVAP}|VL|{.}|file,MEMO)});
  311.     mopen(MEMO,0,21,639,459,{r});
  312.     loop({
  313.     footnote({終了},{b});
  314.     waitx    ();
  315.     case    (@xtype,
  316.         101,{CloseMEMO(MEMO);im({No})},
  317.         201,{CloseMEMO(MEMO);im({No})},,{im({Yes})});
  318.     });
  319. };
  320.  
  321. /*    設定項目確認    */
  322. %setchk{
  323.     %Setchk{
  324.     [Messege]
  325.     SNDMSG({okasi_f.snd});
  326.     footnote(Messege|{が指定されていません});
  327.     select(Messege|{が指定されていません},99999,,{ 確認 },);
  328.     };
  329.     case    (ID={},
  330.         {Yes},    {Setchk({ユーザーID});
  331.             setcdir2(DIR1);
  332.             #PVAPSET.PLP});
  333.     case    (PASS={},
  334.         {Yes},    {Setchk({パスワード});
  335.             setcdir2(DIR1);
  336.             #PVAPSET.PLP});
  337.     case    (AP={}&&AP2={}&&AP3={},
  338.         {Yes},    {Setchk({APの電話番号});
  339.             setcdir2(DIR1);
  340.             #PVAPSET.PLP});
  341.     case    (TEL={},
  342.         {Yes},    {Setchk({使用回線の種類});
  343.             setcdir2(DIR1);
  344.             #PVAPSET.PLP});
  345.     case    (LOGPATH={},
  346.         {Yes},    {Setchk({ログを保存するディレクトリ});
  347.             setcdir2(DIR1);
  348.             #PVAPSET.PLP});
  349.     case    (TEMPPATH={},
  350.         {Yes},    {Setchk({テンポラリファイルを置くディレクトリ});
  351.             setcdir2(DIR1);
  352.             #PVAPSET.PLP});
  353.     case    (TITLEPATH={},
  354.         {Yes},    {TITLEPATH:={B:\TITLE}});
  355.     case    (SAVE,    {},    {SAVE:=    {WHOLE}});
  356.     case    (SAVE2, {},    {SAVE2:={EVERY}});
  357.     case    (LIST,    {},    {LIST:=    {1}});
  358.     case    (CALAMI,{},    {CALAMI:={CONT}});
  359. };
  360.  
  361. /*    初期設定    */
  362. %init{
  363.     case    (VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
  364.     case    (@tail(BELFIL,{.}),
  365.         {snd},{bellfile(BELFIL)},
  366.         {SND},{bellfile(BELFIL)});
  367.     backclr(r,g,b);
  368. };
  369.  
  370. /*    メニュー画面    */
  371. %MAINMENU{
  372.     loop({
  373.     footnote({処理を選択して下さい});
  374.     SNDMSG({erande_f.snd});
  375.     select({Pc-Van Auto-Pilot  PVAP}|ver,
  376.         99999,{im({Yes})},
  377.         { 通信開始 },
  378.             {setcdir2(DIR1);#PVAPONLN.PLP;im({Yes})},
  379.         { アップ予約 },
  380.             {SUBMENU1;im({Yes})},
  381.         { ダウン予約 },
  382.             {SUBMENU2;im({Yes})},
  383.         { ログ参照 },
  384.             {setcdir2(DIR1);#PVAPVIEW.PLP;im({Yes})},
  385.         { USER設定 },
  386.             {setcdir2(DIR1);#PVAPSET.PLP;im({Yes})},
  387.         { 処理設定 },
  388.             {setcdir2(DIR1);#PVAPVAN.PLP;im({Yes})},
  389.         { 設定読込 },
  390.             {setcdir2(DIR1);#PVAPSCHG.PLP;im({Yes})},
  391.         { ファイル操作 },
  392.             {setcdir2(DIR1);
  393.             case(FMGR,{},    {#PVAPFILE.PLP},,
  394.                     {setcdir(@body(FMGR,,{\}));
  395.                     %fmgr @read(FMGR);fmgr});
  396.             im({Yes})},
  397.         {  ID リスト  },
  398.             {setcdir2(DIR1);#PVAPLIST.PLP;im({Yes})},
  399.         { PVAP説明 },
  400.             {NOTEsel;im({Yes})},
  401.         { 一時終了 },
  402.             {Pause;im({Yes})},
  403.         {  終  了  },
  404.             {SUBMENU3;im({Yes})});
  405.     });
  406. };
  407. %SUBMENU1{
  408.     loop({
  409.     SNDMSG({erande_f.snd});
  410.     footnote({処理を選択して下さい});
  411.     select({処理を選択して下さい},
  412.         99999,{im({No})},
  413.         {  新規予約  },
  414.                 {setcdir2(DIR1);#PVAPUSET.PLP;im({Yes})},
  415.         { 確認・変更 },
  416.                 {setcdir2(DIR1);#PVAPUKAK.PLP;im({Yes})},
  417.         {   終  了   },{im({No})});
  418.     });
  419. };
  420. %SUBMENU2{
  421.     loop({
  422.     SNDMSG({erande_f.snd});
  423.     footnote({処理を選択して下さい});
  424.     select({処理を選択して下さい},
  425.         99999,{im({No})},
  426.         {  新規予約  },
  427.                 {setcdir2(DIR1);#PVAPDSET.PLP;im({Yes})},
  428.         { 確認・変更 },
  429.                 {setcdir2(DIR1);#PVAPDKAK.PLP;im({Yes})},
  430.         {   終  了   },{im({No})});
  431.     });
  432. };
  433. %SUBMENU3{
  434.     loop({
  435.     SNDMSG({erande_f.snd});
  436.     footnote({処理を選択して下さい});
  437.     select({処理を選択して下さい},
  438.         99999,{im({No})},
  439.         { PVAPを終了(再起動 PF9)},{SNDMSG2({sayona_f.snd});
  440.                         setcdir2(DIR1);
  441.                         stop},
  442.         {    MopTerm  2を終了    },ENDKAK,
  443.         {      メインメニューへ戻る      },{im({No})});
  444.     });
  445. };
  446. %ENDKAK{
  447.     loop({
  448.     SNDMSG({kaknin_f.snd});
  449.     footnote({確認して下さい});
  450.     select({確認して下さい},
  451.         99999,{im({No})},
  452.         {  終了する  },{stopterm},
  453.         { 終了しない },{im({No})});
  454.     });
  455. };
  456.  
  457. /*    実行    */
  458. setoak({J});
  459. DIR1:=@getcdir;
  460. case(@nochar(DIR1),{3},{DIR1:=@getchar(DIR1,{1},{2})});
  461. setpf(9,{footnote({Loading PVAP ...});}|
  462.     {setcdir(}|@xc({7b})|DIR1|@xc({7d})|{);}|
  463.     {#PVAPMAIN.PLT});
  464. SETFILE:=DIR1|{\PVAPSET.SET};
  465. case    (@filechk(SETFILE),
  466.     {Yes},    {setcdir2(DIR1);#PVAPSET.SET;SETFILE1:={標準設定}},
  467.     {No},    {setcdir2(DIR1);#PVAPSET.PLP});
  468. SNDMSG2({konn_f.snd});
  469. wait({1});
  470. setchk;
  471. init;
  472. mkdir2(LOGPATH);
  473. mkdir2(TEMPPATH);
  474. VANFILE:=DIR1|{\PVAPVAN.SET};
  475. case    (@filechk(VANFILE),
  476.     {Yes},    {setcdir2(DIR1);#PVAPVAN.SET;SETFILE2:={標準設定}},
  477.     {No},    {setcdir2(DIR1);#PVAPVAN.PLP});
  478. MAINMENU;
  479.